package org.code.mallspringboot.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.code.mallspringboot.dto.PmsAttributeDto;
import org.code.mallspringboot.pojo.PmsProductAttributeCategory;
import org.code.mallspringboot.pojo.PmsProductCategoryAttributeRelation;
import org.code.mallspringboot.vo.AttributeListVo;

import java.util.List;

@Mapper
public interface PmsProductAttributeCategoryMapper {

    /**
     属性筛选-查询全部
     * @return
     */
    List<PmsProductAttributeCategory> selectAll();

    /**
     根据 PmsProductAttributeValue 表中的 product_category_id查询
     * @return
     */
    List<PmsProductCategoryAttributeRelation> selectByproductCategoryId(@Param("productCategoryId") int productCategoryId);

    /**
     查询商品类型+分页
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<PmsProductAttributeCategory> selectPage(@Param("pageNum") int pageNum,@Param("pageSize") int pageSize);

    /**
     总条数
     * @return
     */
    int total();

    /**
     商品类型-添加
     * @param name
     * @return
     */
    int add(@Param("name") String name);

    /**
     商品类型-删除
     * @param id
     * @return
     */
    int delete(@Param("id") int id);

    /**
     上皮类型-修改
     * @param id
     * @param name
     * @return
     */
    int update(@Param("id") int id,@Param("name") String name);

    /**
     商品类型-属性列表-分页
     * @return
     */
    List<AttributeListVo> selectAttributePage(@Param("id") int id,@Param("type") int type,
                                              @Param("pageNum") int pageNum,@Param("pageSize") int pageSize);

    /**
     商品属性列表-总条数
     * @param id
     * @return
     */
    int total2(@Param("id") int id,@Param("type") int type);

    /**
     商品属性添加
     * @param pmsAttributeDto
     * @return
     */
    int add_attribute(PmsAttributeDto pmsAttributeDto);

    /**
     商品列表修改属性、参数数量
     * @param pmsProductAttributeCategory
     * @return
     */
    int update_attribute(PmsProductAttributeCategory pmsProductAttributeCategory);

    /**
     修改商品属性/参数
     * @param pmsAttributeDto
     * @return
     */
    int update_attribute2(PmsAttributeDto pmsAttributeDto);

    /**
     修改商品属性回显
     * @param id
     * @return
     */
    PmsAttributeDto select_attributeById(@Param("id") int id);

    /**
     删除商品属性/参数
     * @param id
     * @return
     */
    int delete_attribute(@Param("id") int id);

    /**
     通过id查找type
     * @param id
     * @return
     */
    Integer select_attribute_type(@Param("id")int id);

    /**
     通过id查找type
     * @param id
     * @return
     */
    Integer select_attribute_productAttributeCategoryId(int id);

    /**
     修改属性数量
     * @return
     */
    int update_attribute_count(@Param("productAttributeCategoryId") int productAttributeCategoryId);

    /**
     修改参数数量
     * @return
     */
    int update_attribute_param_count(@Param("productAttributeCategoryId")int productAttributeCategoryId);
}
